package com.example.framework.utils;

import android.text.TextUtils;
import android.util.Log;

import com.example.framework.BuildConfig;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author:0.2℃
 * @date： 2022-03-22 23:38
 * @Description ：
 *
 * 只有在debug模式下才打印
 * 日志工具类 不仅可以打印日志，还能记录日志 —— 通过一个File记录
 */
public class LogUtils {
    // 时间缓存
    private static SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    // 通过logUtils.方法名 来使用
    public static void i (String msg) {
        if (BuildConfig.LOG_DEBUG) {
            if (!TextUtils.isEmpty(msg)) {
                Log.i(BuildConfig.LOG_TAG, msg);
                writeToFile(msg);
            }
        }
    }

    public static void e (String error) {
        if (BuildConfig.LOG_DEBUG) {
            if (!TextUtils.isEmpty(error)) {
                Log.e(BuildConfig.LOG_TAG, error);
                writeToFile(error);
            }
        }
    }

    /**
     * 用来保存日志的方法
     */
    private static void writeToFile (String text) {
        // 文件路径
        String filePath = "/sdcard/Meet/Meet.log";
        // log的内容，结构为——时间+内存
        String log = mSimpleDateFormat.format(new Date()) + " " + text + "\n";
        // 开始写入，首先需要检查父路径
        File fileGroup = new File("/sdcard/Meet/");
        // 如果路径不存在，则创建这个路径
        if (!fileGroup.exists()) {
            fileGroup.mkdirs();
        }
        FileOutputStream fos = null;
        BufferedWriter bufferedWriter = null;
        try {
            // true：表示可以续写而不是覆盖
            fos = new FileOutputStream(filePath, true);
            // 因为编码问题，要编写中文需要用到GBK，下面的写法就是写入中文
            bufferedWriter = new BufferedWriter(
                    new OutputStreamWriter(fos, Charset.forName("gbk"))
            );
            bufferedWriter.write(log);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (bufferedWriter != null ) {
                try {
                    bufferedWriter.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
